import java.util.Arrays;

public class Main {
    //练习4 求数组的平均值
    public static double avg(int[] arr){
        int sum = 0;
        for(int i=0;i<arr.length;i++){
            sum+=arr[i];
        }
        return sum*1.0/arr.length;//变成小数运算
    }
    public static void main4(String[] args) {
        int[] arr = {12,31,2,52,54,113,1,32};
        System.out.println(avg(arr));
    }

    //练习3 扩容
    public static int[] mycopy(int[] arr) {
        int[] copy = new int[arr.length];
        System.arraycopy(arr,0,copy,0,arr.length);
        //           源头 从哪开始拷贝  目的地  目的地数组的位置  长度
        //System.arraycopy 支持局部的拷贝
        return copy;
    }
    public static void main3(String[] args) {
        int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int[] array2 = Arrays.copyOf(array, array.length*2);
        array = array2;//更新array的地址
        array2 = Arrays.copyOfRange(array,2,5);//[2,5)左闭右开的区间
        System.out.println(Arrays.toString(array2));
        int[] array3 = array2.clone();//源自于一个类 -> Object
        System.out.println(Arrays.toString(array3));
    }
    //练习2: 数组的拷贝 -- 产生新的内存空间 - 拥有一模一样的数据
    public static void main2(String[] args) {
        int[] arr = {1,2,3,4,5};
        int[] arr2 = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            arr2[i] = arr[i];
        }
        System.out.println(Arrays.toString(arr));
        System.out.println(Arrays.toString(arr2));
        int[] arr3 = Arrays.copyOf(arr, arr.length);//拷贝操作
        System.out.println(Arrays.toString(arr3));
    }

    //练习1 ：数组转换字符串
    public static String myToString(int[] a){
        //断言
        //assert a != null; TODO：可能需要设置一些参数(前提)
        if(a == null){
            return "null";
        }
        else if(a.length == 0){//可以不写这部分
            return "[]";
        }
        String ret = "[";
        for(int i = 0; i < a.length; i++){
            ret = ret+a[i];
            if(i != a.length-1){
                ret = ret+",";
            }
        }
        ret = ret + "]";
        return ret;
    }
    public static void main1(String[] args) {
        int[] array = null;
        //String ret = Arrays.toString(array);
        String ret = myToString(array);
        System.out.println(ret);
    }
    //
    public static void main0(String[] args) {
        int[] arr = {1,2,3,4,5};//整体初始化，只有一次机会
        //数组和结构体都是聚合类型--不能分开初始化
        //这种写法是错误的
        /*int[] arr1;
        arr1 = {1,2,3,4,5};*/

    }
}